EDBError v IB cislo ci typ chyby?
Otázka od: Ales Pavel
17. 12. 2002 12:17
Ahoj kluci v IBDatasetu mam event OnPostError
umim zavolat E.CreateFmt to je v poradku -
potrebuji ale zjistit o jakou chybu se jedna jak to zjistim??
Hezky den
Ales Pavel
TalpaSoft - software pro kazdeho
tel:0777/992792
web: http://Talpa.chytrak.cz
e-casopis: http://rozarkaweb.aktualne.cz
Odpovedá: Ing. Jiri SOKOL
18. 12. 2002 10:05
Dne 17. prosinec 2002, <delphi-l@clexpert.cz> napsal:
> Ahoj kluci v IBDatasetu mam event OnPostError
> umim zavolat E.CreateFmt to je v poradku -
> potrebuji ale zjistit o jakou chybu se jedna jak to zjistim??
Ahoj!
Sice ted nemam pred sebou Delphi, ale tipl bych si, ze u udalosti OnPostError
budes dostavat pres
parametr (ze by Msg .... ? ) tu "errorovou" hlasku, takze z toho by jsi mel
byt schopen zjistit
cislo toho "Erroru".
No a pak v dokumentaci (ted kdyby jsi me zabil, tak si nevzpomenu, ktery z tech
5 file-u to je)
najdes odpovidajici hlasku.
Ahoj, snad Ti to pomuze.
Ing. Jiri Sokol, js-delphi@seznam.cz, +420251431187
D6ProfSP2,WinNT
amatersky
programator
______________________________________________________________________
Reklama:
Vyhrajte cenu za 100.000,- Kc v souteži "Svetem Financí
za 30 dní" na
http://soutez.finance.cz. Než Vás predbehnou jiní!
Odpovedá: Ales Pavel
19. 12. 2002 14:42
No to ano...tam zjistim puvodni chybovou hlasku...ale ne cislo chyby...tu
bych musel pracne vycucavat z toho textu a to se mi vubec nelibi...musi tam
preci byt neco ceho se clovek chyti
kdyz chce volat treba CASE OF
> Sice ted nemam pred sebou Delphi, ale tipl bych si, ze u udalosti
> OnPostError budes dostavat pres
> parametr (ze by Msg .... ? ) tu "errorovou" hlasku, takze z
> toho by jsi mel byt schopen zjistit
> cislo toho "Erroru".
> No a pak v dokumentaci (ted kdyby jsi me zabil, tak si
> nevzpomenu, ktery z tech 5 file-u to je)
> najdes odpovidajici hlasku.
Hezky den
Ales Pavel
D6 Ent WXP
laik v profesionalnim kolotoci
http://talpa.chytrak.cz/
Odpovedá: Ondrej Kelle
19. 12. 2002 15:14
> Ahoj kluci v IBDatasetu mam event OnPostError
> umim zavolat E.CreateFmt to je v poradku -
a preco by si to robil?
> potrebuji ale zjistit o jakou chybu se jedna jak to zjistim??
Ak je to EIBError, potom ma vlastnosti IBErrorCode a SQLCode.
HTH
TOndrej
Odpovedá: Ales Pavel
19. 12. 2002 19:13
Aldi vysvetluje
Potrebuji proste reagovat na unique error ktery mam prilepene na 2 polich,je
to lepsi nez prochazet vsechny pole a hledat hodnoty,nebyl by to problem
kdybych tam zaroven nemel i prazdna pole, asi to tedy udelam tak ze otestuji
prazdne pole pri post a pak pri bude jasny ze pri dberror se jedna o jinou
chybu tj. unique key, ale nelibi se mi to, preci jen bych rad vedel cislo
chyby a podle toho zobrazil vlastin chybovou hlasku,to mi prijde lepsi...
>Ondra mudruje:
> a preco by si to robil?
>
> > potrebuji ale zjistit o jakou chybu se jedna jak to zjistim??
>
> Ak je to EIBError, potom ma vlastnosti IBErrorCode a SQLCode.
>
> HTH
> TOndrej
Odpovedá: TOndrej
19. 12. 2002 20:42
>>> Ahoj kluci v IBDatasetu mam event OnPostError
>>> umim zavolat E.CreateFmt to je v poradku -
>>Ondra mudruje:
>> a preco by si to robil?
> Aldi vysvetluje
[snip]
Ja som sa pytal, preco by si v OnPostError vytvaral novu instanciu vynimky
pomocou E.CreateFmt. Pripada mi to zbytocne, kedze v OnPostError uz mas
vytvorenu instanciu vynimky (typu EDatabaseError alebo potomka):
type
TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError; var
Action: TDataAction) of object;
Kedze pouzivas TIBDataSet, v Tvojom pripade bude E typu EIBError (alebo
potomka) a tym padom si vies zistit IBErrorCode a SQLCode.
if E is EIBError then
with EIBError(E) do
ShowMessage(Format('[%s] ''%s'' IBError: %d SQLCode: %d',
[ClassName, Message, IBError, SQLCode]));
HTH
TOndrej
Odpovedá: Ales Pavel
20. 12. 2002 12:58
Aldik se placa po zadnici:
No a to je presne to co jsem potreboval vedet Jen jsem to neumel
rici
> type
> TDataSetErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError; var
> Action: TDataAction) of object;
>
> Kedze pouzivas TIBDataSet, v Tvojom pripade bude E typu EIBError (alebo
> potomka) a tym padom si vies zistit IBErrorCode a SQLCode.
>
> if E is EIBError then
> with EIBError(E) do
> ShowMessage(Format('[%s] ''%s'' IBError: %d SQLCode: %d',
> [ClassName, Message, IBError, SQLCode]));
>